﻿using System;
using System.Collections.Generic;
using System.Linq;
using System.Web;

namespace Iudicium.Servicios.CRN
{
    /// <summary>
    /// Summary description for InvolucradoCRN
    /// </summary>
    public class InvolucradoCRN
    {
        public InvolucradoCRN()
        {

        }

        public static void InsertInvolucradosProceso(int servicioId, string demandantes, string demandados)
        {
            if (servicioId <= 0)
            {
                throw new ArgumentException("El id del servicio no puede ser menor o igual que cero.");
            }

            if (demandados == null)
                demandados = "";

            if (demandantes == null)
                demandantes = "";

            if (string.IsNullOrEmpty(demandantes) || string.IsNullOrEmpty(demandados))
            {
                throw new ArgumentException("Entre los demandados y demandantes, al menos uno debe ser distinto de nulo o vacio.");
            }

            InvolucradoDSTableAdapters.InvolucradosTableAdapter adapter = new InvolucradoDSTableAdapters.InvolucradosTableAdapter();

            adapter.InsertInvolucradosProcesosByIdList(servicioId, demandantes, demandados);

        }

        public static void DeleteInvolucradosByServicioId(int servicioId, string ids)
        {
            if (servicioId <= 0)
            {
                throw new ArgumentException("El id del servicio no puede ser menor o igual que cero.");
            }
            if(string.IsNullOrEmpty(ids))
            {
                throw new ArgumentException("Los ids de los involucrados no puede ser nulo o vacio.");
            }

            InvolucradoDSTableAdapters.InvolucradosTableAdapter adapter = new InvolucradoDSTableAdapters.InvolucradosTableAdapter();

            adapter.Delete(servicioId, ids);
        }

        public static List<Iudicium.Servicio.Involucrado> GetInvolucradosByServicioId(int servicioId, Iudicium.Servicio.Involucrado.TipoInvolucrado tipo)
        {
            if (servicioId <= 0)
            {
                throw new ArgumentException("El id del servicio no puede ser menor o igual que cero.");
            }

            InvolucradoDSTableAdapters.InvolucradosTableAdapter adapter = new InvolucradoDSTableAdapters.InvolucradosTableAdapter();

            InvolucradoDS.InvolucradosDataTable tabla = adapter.GetInvolucradosByServicioId(servicioId, tipo.ToString());

            if (tabla == null)
            {
                throw new Exception("El SQL se ejecuto correctamente pero se devolvieron datos nulos.");
            }

            List<Iudicium.Servicio.Involucrado> lista = new List<Servicio.Involucrado>();

            foreach (InvolucradoDS.InvolucradosRow row in tabla)
            {
                Iudicium.Servicio.Involucrado obj = new Servicio.Involucrado(row.involucradoId, row.servicioId,
                    row.personaId, row.nombrePersona, Iudicium.Servicio.Involucrado.GetTipoInvolucradoFromString(row.tipoInvolucrado));
                lista.Add(obj);
            }
            return lista;
        }
    }
}